/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package comandaXM.vista.manteniment.proveidor;


import comandaXM.accions.ProveidorsAct;
import comandaXM.classes.manteniment.auxiliar.Provincia;
import comandaXM.classes.manteniment.proveidor.CentreProveidor;
import comandaXM.classes.manteniment.proveidor.Proveidor;
import comandaXM.excepcions.ExceptionHibernate;
import comandaXM.excepcions.ExceptionXML;
import comandaXM.utils.JOPtionPaneXM;
import comandaXM.utils.JPanelTaula;
import comandaXM.utils.TDSLanguageUtils;
import comandaXM.utils.TableModel;
import java.awt.event.ActionEvent;
import java.util.Iterator;




/**
 *
 * @author xmarti
 */
public abstract class JPCentres  extends JPanelTaula{
    private JPContactes contactes; 
    private CentreProveidor centreActual; 
    private Proveidor proveidorActual; 
    private JOPtionPaneXM optionPane= new JOPtionPaneXM(); 
    private ProveidorsAct proveidorAct= new ProveidorsAct(); 
    public JPCentres( Proveidor proveidor) throws ExceptionHibernate {
        super("jpCentreProveidor");
        this.proveidorActual= proveidor;          
        super.chargeTable();        
        
    }

    @Override
    public void nou(ActionEvent evt) {
        try {            
            super.getFormatTable().setFormat();
            super.getFormatTable().saveFormat();
            centreActual= new CentreProveidor() ; 
            centreActual.setProveidor(proveidorActual);
            centreActual.setPoblacio(proveidorActual.getPoblacio());
            centreActual.setCodiPostal(proveidorActual.getCodiPostal());
            centreActual.setDireccio(proveidorActual.getAdressaFiscal());
            centreActual.setPais(proveidorActual.getPais());
            centreActual.setProvincia(proveidorActual.getProvincia()); 
            final JDCentre dialog = new JDCentre(null,true,centreActual);               
            dialog.setLocationRelativeTo(null);
            dialog.setVisible(true);
            if(dialog.isActualitzar()){
                try {                     
                    proveidorActual.getCentres().add(centreActual); 
                    this.chargeTable();
                } catch (ExceptionHibernate ex) {
                    optionPane.errMessagge(ex.getMessage());
                }
            }
            
        } catch (ExceptionXML ex) {
            
        }
        
    }
 

    @Override
    public void modificar(ActionEvent evt) {        
        this.centreActual=(CentreProveidor) this.getObject(); 
        final JDCentre dialog = new JDCentre(null,true,this.centreActual);               
        dialog.setLocationRelativeTo(null);
        dialog.setVisible(true);
        if (dialog.isActualitzar()){
            try { 
                //centreActual.setId(this.proveidorAct.add(centreActual, false));
                //this.proveidorActual.getCentres().add(centreActual); 
                this.chargeTable();
            }catch (ExceptionHibernate ex) {
                this.optionPane.errMessagge(ex.getMessage());
            }
        }        
    }

    @Override
    public void eliminar(ActionEvent evt) {                        
        if(this.optionPane.ConfirmRemove()){
            try {
                this.proveidorActual.getCentres().remove((CentreProveidor) this.getObject());
                this.proveidorAct.remove((CentreProveidor) this.getObject());
                this.chargeTable();
            } catch (ExceptionHibernate ex) {                
                this.optionPane.errMessagge(ex.getMessage());                
            }
        }
    }

    @Override
    public TableModel getModel() throws ExceptionHibernate {
        TableModel dadesTaula = null;                            
            //TODO ESTIC AQUI CAL REDIFINIR ELS CENTRES. 
            String [] columns={                                                                                                         
                          TDSLanguageUtils.getMessage("jpCentres.JTable.departament.titol"),                          
                          TDSLanguageUtils.getMessage("jpCentres.JTable.poblacio.titol"),                          
                          TDSLanguageUtils.getMessage("jpCentres.JTable.provincia.titol"),
                          TDSLanguageUtils.getMessage("jpCentres.JTable.actiu.titol"),
                          };    
            Object[][] dades=null;                
            if (this.proveidorActual.getCentres().size()>0){
                dades=new Object[this.proveidorActual.getCentres().size()][columns.length];                          
                Integer i=0;            
                for (Iterator it = this.proveidorActual.getCentres().iterator(); it.hasNext();) {
                    CentreProveidor c = (CentreProveidor) it.next();                
                    dades[i][0]= c;                                     
                    if (c.getPoblacio() ==(null))dades[i][1]="-"; else dades[i][1]= c.getPoblacio(); 
                    if (c.getProvincia() instanceof Provincia) if (c.getProvincia().getNom() ==(null))dades[i][3]="-"; else dades[i][2]= c.getProvincia().getNom(); 
                    dades[i][3]= c.isActiu(); 
                    i++;
                }     
            }                  
        return new TableModel(columns, dades); 
    }

    @Override
    public void select() {        
        selectContactes(); 

    }
    public abstract void selectContactes (); 
    
    
}
